<?php
/**** 
file log.class.php 
作用: 记录信息到日志 
****/ 

defined('JSJZJX')||exit('非法访问！');
class log { 
    const LOGFILE = 'curr.log'; //建一个常量,代表日志文件的名称 
    // 写日志的 
    public static function write($content) { 
        $content .= "\r\n"; 
        // 判断是否备份 
        $log = self::isBackup(); // 计算出日志文件的地址 
         
        $fh = fopen($log,'ab'); 
        fwrite($fh,$content); 
        fclose($fh);  
    } 
    // 备份日志 
    public static function backup() { 
        // 就是把原来的日志文件,改个名,存储起来 
        // 改成 年-月-日.bak这种形式 
        //$log = ROOT . 'data/log/' . self::LOGFILE;
        $log = ROOT . 'log/' . self::LOGFILE;  
        //$bak = ROOT . 'data/log/' . date('ymd') . mt_rand(10000,99999) . '.bak';
        $bak = ROOT . 'log/' . date('ymd') . mt_rand(10000,99999) . '.bak';  
        return rename($log,$bak); 

    } 
    // 读取并判断日志的大小 
    public static function isBackup() { 
        //$log = ROOT . 'data/log/' . self::LOGFILE; 
        $log = ROOT . 'log/' . self::LOGFILE; 
         
        if(!file_exists($log)) { //如果文件不存在,则创建该文件 
            touch($log);    // touch在linux也有此命令,是快速的建立一个文件 
            return $log; 
        } 
        // 要是存在,则判断大小 
        // 清除缓存,不至于出现多次循环时读到的文件大小相同 
        clearstatcache(true,$log); 
        $size = filesize($log); 
        if($size <= 1024 * 1024) { //大于1M 
            return $log; 
        } 
         
        // 走到这一行,说明>1M 
        if(!self::backup()) { 
            return $log; 
        } else { 
            touch($log); 
            return $log; 
        } 
    } 
}
?>